#include "../csapp.h"


void sigchld_handler(int sig)
{
	while (waitpid(-1, 0, WNOHANG) > 0)
		;
	return;
}

int test_echoserverp(int argc, char **argv)
{
	int listenfd, connfd, port, clientlen = sizeof(struct sockaddr_in);
	struct sockaddr_in clientaddr;
	
	if (argc != 2)
	{
		fprintf(stderr,  "usage: %s <port>\n", argv[0]);
		return -1;
	}
	
	port = atoi(argv[1]);
	
	Signal(SIGCHLD,sigchld_handler);
	listenfd = Open_listenfd(port);
	while (1)
	{
		connfd = Accept(listenfd, (SA *) &clientaddr, (socklen_t *)&clientlen);
		if (Fork() == 0)
		{
			Close(listenfd);
			echo(connfd);
			Close(connfd);
			return (0);
		}	
		Close(connfd);
	}
	return (0);
}

